Fix iOS trim analyzer warnings and Android 16KB ELF page alignment - #108
Conversation
- global.json: SDK 8.0.100 → 10.0.100 - Directory.Build.props: LangVersion 12.0 → 14.0 - All 34 csproj files: net8.0 → net10.0 (including android/ios variants) - All CI workflows: dotnet-version 8.0.x → 10.0.x - Humanizer: 2.14.1 → 3.0.10 (was held back for .NET 9+ requirement) - Fixed Humanizer.Localisation → Humanizer namespace migration Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/f7af1d57-4873-47a0-96fb-6b14be21812a Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
- Replace 9 object lock fields with System.Threading.Lock (better perf) - Convert 240 Array.Empty<T>() calls to [] collection expressions - Remove unnecessary legacy packages (System.IO.FileSystem.Primitives, System.Runtime.InteropServices, System.Runtime.Handles, System.ComponentModel.Annotations, Microsoft.Win32.Registry) - Fix type inference edge cases where [] needs explicit typing Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/f7af1d57-4873-47a0-96fb-6b14be21812a Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/f7af1d57-4873-47a0-96fb-6b14be21812a Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
- Fix Task.FromResult([]) type inference in Carousel.cs and BeatmapCarousel.cs - Fix ?? [] operator mismatch in TestMultiplayerClient.cs - Fix ambiguous ChangeUserMods([]) call in TestSceneMultiplayerUserModDisplay.cs Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/f1bab7a5-5dbf-4dd9-a3f1-be7d5abae1a5 Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
…054/0062/0260), Android CS0433 NotNullAttribute ambiguity, iOS Xcode 26 runner, AndroidHttpClientHandlerType, MAUI Essentials update Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/124e253f-a180-470b-855f-ff235f45e2cd Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
…ix iOS MAUI Essentials - AutoMapper 13.0.1→16.1.1: fixes HIGH severity CVE GHSA-rvv3-g6hj-g44x (DoS via uncontrolled recursion) - Migrate MapperConfiguration to new 2-arg constructor (NullLoggerFactory.Instance) - SharpCompress 0.47.0→0.47.3 (patch bugfixes) - iOS Microsoft.Maui.Essentials 8.0.3→10.0.51 (.NET 10 compat) Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/124e253f-a180-470b-855f-ff235f45e2cd Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
…n native bridge static constructors - NUnit3TestAdapter 6.1.0→6.2.0 across all 11 test projects - Moq 4.17.2→4.20.72 on Android/iOS test projects (aligns with desktop) - Bogus 35.6.2→35.6.5 on Android/iOS test projects (aligns with desktop) - OboeAudioBridge/VulkanProbe: use DllImportSearchPath.ApplicationDirectory in NativeLibrary.TryLoad to avoid Samsung device crashes from system path scanning Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/797cbeef-49e9-4439-bcff-0e61bf03de70 Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
…yntax - update-web-mod-definitions.yml: actions/checkout@v4 → v6 (3 instances) - deploy.yml: deprecated ::set-output → $GITHUB_OUTPUT syntax Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/797cbeef-49e9-4439-bcff-0e61bf03de70 Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
…, InspectCode v0.12, create-pull-request v8, test-reporter v2 Critical fix: deploy.yml echo was missing >> "$GITHUB_OUTPUT", causing empty step outputs and broken NuGet pack/publish pipeline. Action updates: - JetBrains/ReSharper-InspectCode: v0.11 → v0.12 (2025.3.3) - peter-evans/create-pull-request: v6 → v8 (retry plugin, checkout@v6 compat) - dorny/test-reporter: v2.6.0 → v2 (auto-update minor versions) Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/a4bd5309-6567-4797-b6e9-73b464e23bf7 Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
…files) - Fix Android XA1032: AndroidHttpClientHandlerType back to Xamarin.Android.Net.AndroidMessageHandler (correct for SDK 36.1.43) - Fix iOS NETSDK1144: Add MtouchLink=None for Debug, suppress trim analysis warnings for Release (reflection-heavy codebase) - Fix Code Quality: dotnet format fixes IDE0005/0018/0019/0031/0032/ 0054/0062/0260 across 392 files Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/033e5847-1348-4d63-b60a-24a3b90f89ea Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
… 34→36 - Enable RunAOTCompilation + AndroidEnableProfiledAot in Release for lower latency gameplay on Samsung S23 Ultra and similar devices - Suppress trim analysis warnings in Release (reflection-heavy codebase) - Upgrade AndroidManifest targetSdkVersion from 34 to 36 across all 6 Android projects to match .NET 10 Android SDK 36 and eliminate XA4211 Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/033e5847-1348-4d63-b60a-24a3b90f89ea Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
…ullability/CA1422, Android 16KB warnings - Fix IDE0017 (object init), IDE0027 (expression body), IDE0270 (null coalesce throw), IDE0055 (formatting) across 20 files - Fix iOS CA1422: use EffectiveGeometry.InterfaceOrientation on iOS 26+ with fallback for older versions in AppDelegate.cs - Fix iOS CS8767: suppress nullability mismatch from framework base class - Suppress iOS trim analysis warnings in Debug (CI builds Debug) - Suppress Android 16KB page-size warnings from ppy.Veldrid.SPIRV Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/231bc799-fa7e-4d2a-8238-b060245fd5e6 Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
|
|
||
| if (GetFileInformationByHandle(handle, out fileInfo)) | ||
| if (GetFileInformationByHandle(handle, out var fileInfo)) |
Check warning
Code scanning / InspectCode
Incorrect blank lines: Blank lines are redundant elsewhere Warning
|
|
||
| if (!IsLoaded) | ||
| return; | ||
|
|
||
| updateMessageContent(); | ||
| } | ||
| } | ||
| } = null!; |
Check warning
Code scanning / InspectCode
Member initialized value ignored Warning
| int.TryParse(match.Groups[@"minutes"].Value, out timeMin); | ||
| int.TryParse(match.Groups[@"seconds"].Value, out timeSec); | ||
| int.TryParse(match.Groups[@"milliseconds"].Value, out timeMsec); | ||
| int.TryParse(match.Groups[@"minutes"].Value, out int timeMin); |
Check warning
Code scanning / InspectCode
Incorrect blank lines: Blank lines are redundant elsewhere Warning
|
|
||
| if (opponentHand.RemoveCard(item, out card, out var drawQuad)) | ||
| if (opponentHand.RemoveCard(item, out var card, out var drawQuad)) |
Check warning
Code scanning / InspectCode
Incorrect blank lines: Incorrect number of blank lines near braces Warning
|
|
||
| if (playerHand.RemoveCard(item, out card, out var drawQuad)) | ||
| if (playerHand.RemoveCard(item, out var card, out var drawQuad)) |
Check warning
Code scanning / InspectCode
Incorrect blank lines: Incorrect number of blank lines near braces Warning
| InitializeDelegate initialize; | ||
| getDelegate(0x0150E828, out initialize); | ||
| getDelegate(0x0150E828, out | ||
| InitializeDelegate initialize); |
Check warning
Code scanning / InspectCode
Incorrect indent: Missing indent/outdent elsewhere Warning
| teamDisplay.ShowScore = value; | ||
| } | ||
| } | ||
| get => teamDisplay?.ShowScore ?? false; set => teamDisplay?.ShowScore = value; |
Check warning
Code scanning / InspectCode
Incorrect line breaks: Line break is missing elsewhere Warning
| if (rulesetInstance == null) | ||
| throw new RulesetLoadException("Creating ruleset instance failed when attempting to create playable beatmap."); | ||
|
|
||
| var rulesetInstance = ruleset.CreateInstance() ?? throw new RulesetLoadException("Creating ruleset instance failed when attempting to create playable beatmap."); |
Check warning
Code scanning / InspectCode
'??' condition is known to be null or not null Warning
| if (assemblyQualifiedName == null) | ||
| throw new ArgumentException($"{type}'s assembly-qualified name is null. Ensure that it is a concrete type and not a generic type parameter.", nameof(type)); | ||
|
|
||
| string? assemblyQualifiedName = type.AssemblyQualifiedName ?? throw new ArgumentException($"{type}'s assembly-qualified name is null. Ensure that it is a concrete type and not a generic type parameter.", nameof(type)); |
Check warning
Code scanning / InspectCode
Variable can be declared as non-nullable Warning
| if (LabelTextFlowContainer != null) | ||
| LabelTextFlowContainer.Padding = value; | ||
| } | ||
| get => LabelTextFlowContainer?.Padding ?? new MarginPadding(); set => LabelTextFlowContainer?.Padding = value; |
Check warning
Code scanning / InspectCode
Incorrect line breaks: Line break is missing elsewhere Warning
…d 16KB comment Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/1fb2b183-fabf-4983-9c1a-f0ae18912292 Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
…im analyzer warnings Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/1fb2b183-fabf-4983-9c1a-f0ae18912292 Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
…uppression as fallback Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/d87f8128-0f76-4738-a1c6-f3f37e742734 Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR aims to resolve CI/build warnings treated as errors on iOS (trim analyzer) and Android (16KB ELF page alignment), but it also performs a broad platform/tooling upgrade (net10/C# 14) and widespread C# syntax modernisation across rulesets, tests, and workflows.
Changes:
- Updates projects, CI, and tooling to .NET 10 / C# 14 and refreshes some package versions.
- Modernises C# code across the repository (collection expressions
[], property patterns,?., local functionsstatic,fieldkeyword). - Adjusts Android build configuration (props, manifests, native library load path) in support of newer Android constraints mentioned in the PR description.
Reviewed changes
Copilot reviewed 299 out of 826 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| osu.Game.Tests/Visual/UserInterface/TestSceneModCustomisationPanel.cs | Replace empty array creation with collection expressions. |
| osu.Game.Tests/Visual/UserInterface/TestSceneLogoTrackingContainer.cs | Minor using directive reordering. |
| osu.Game.Tests/Visual/UserInterface/TestSceneFirstRunSetupOverlay.cs | Replace Enumerable.Empty<T>() with collection expression. |
| osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs | Replace empty enumerable fallback with collection expression. |
| osu.Game.Tests/Visual/UserInterface/TestSceneDashboardBeatmapListing.cs | Using order adjustments. |
| osu.Game.Tests/Visual/UserInterface/TestSceneCommentRepliesButton.cs | Using order adjustments. |
| osu.Game.Tests/Visual/UserInterface/TestSceneButtonsInput.cs | Using order adjustments. |
| osu.Game.Tests/Visual/UserInterface/TestSceneBeatmapAttributeText.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/TestMultiplayerComponents.cs | Using order adjustments. |
| osu.Game.Tests/Visual/SongSelect/TestSceneSongSelectFiltering.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/SongSelect/TestSceneSongSelect.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/SongSelect/TestSceneFooterButtonMods.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/SongSelect/TestSceneDifficultyStatisticsDisplay.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapRecommendations.cs | Make local function static. |
| osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapMetadataWedge.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapLeaderboardWedge.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapLeaderboardScore.cs | Simplify null-check to null-conditional assignment. |
| osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapCarouselUpdateHandling.cs | Use prefix increment. |
| osu.Game.Tests/Visual/SongSelect/SongSelectComponentsTestScene.cs | Simplify null-check via null-conditional. |
| osu.Game.Tests/Visual/Settings/TestSceneSettingsItem.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Ranking/TestSceneStatisticsPanel.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Ranking/TestSceneSimpleStatisticTable.cs | Replace Enumerable.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Ranking/TestSceneResultsScreen.cs | Simplify null-check via null-conditional. |
| osu.Game.Tests/Visual/Online/TestSceneVotePill.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Online/TestSceneUserRequest.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Online/TestSceneUserProfilePreviousUsernamesDisplay.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Online/TestSceneUserProfileOverlay.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Online/TestSceneUserHistoryGraph.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Online/TestSceneTotalCommentsCounter.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Online/TestSceneStandAloneChatDisplay.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Online/TestSceneShowMoreButton.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Online/TestSceneRankingsTables.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Online/TestSceneRankingsCountryFilter.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Online/TestSceneProfileRulesetSelector.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Online/TestScenePlayHistorySubsection.cs | Using order adjustments; replace empty array with collection expressions. |
| osu.Game.Tests/Visual/Online/TestSceneOnlineBeatmapListingOverlay.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Online/TestSceneOfflineCommentsContainer.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Online/TestSceneNewsSidebar.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Online/TestSceneNewsHeader.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Online/TestSceneNewsCard.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Online/TestSceneLeaderboardScopeSelector.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Online/TestSceneLeaderboardModSelector.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Online/TestSceneKudosuHistory.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Online/TestSceneHomeNewsPanel.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Online/TestSceneGraph.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Online/TestSceneDrawableComment.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Online/TestSceneChatOverlay.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Online/TestSceneBeatmapSetOverlay.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Online/TestSceneBeatmapListingOverlay.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Online/TestSceneAdvancedStats.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Navigation/TestSceneSongSelectNavigation.cs | Use property-pattern is ResultsScreen { IsLoaded: true }. |
| osu.Game.Tests/Visual/Navigation/TestSceneSkinEditorNavigation.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Navigation/TestSceneScreenNavigation.cs | Use property-pattern is LoungeSubScreen { IsLoaded: true }. |
| osu.Game.Tests/Visual/Multiplayer/TestSceneTeamVersus.cs | Replace casts with property-patterns. |
| osu.Game.Tests/Visual/Multiplayer/TestScenePlaylistsSongSelect.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayerPlayer.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayerMatchSubScreen.cs | Change empty mods passed to ChangeUserMods(). |
| osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayerMatchSongSelect.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayer.cs | Use property-pattern is MultiSpectatorScreen { IsLoaded: true }. |
| osu.Game.Tests/Visual/Multiplayer/TestSceneMultiSpectatorScreen.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Menus/TestSceneToolbarRulesetSelector.cs | Replace Enumerable.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Menus/TestSceneToolbar.cs | Replace Enumerable.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Matchmaking/TestSceneBeatmapSelectGrid.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Gameplay/TestSceneStoryboardSamplePlayback.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Gameplay/TestSceneSkinnableHUDOverlay.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Gameplay/TestSceneSkinnableDrawable.cs | Replace cast-null check with property-pattern. |
| osu.Game.Tests/Visual/Gameplay/TestSceneSkinEditor.cs | Replace casts with property-patterns. |
| osu.Game.Tests/Visual/Gameplay/TestSceneScrollingHitObjects.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Gameplay/TestSceneReplayDownloadButton.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Gameplay/TestSceneReplay.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Gameplay/TestScenePoolingRuleset.cs | Use static local function; replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Gameplay/TestScenePlayerMaxDimensions.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Gameplay/TestScenePlayerLocalScoreImport.cs | Use property-pattern; make local function static. |
| osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs | Replace Array.Empty<T>() with collection expressions; simplify null-check. |
| osu.Game.Tests/Visual/Gameplay/TestSceneFailJudgement.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Gameplay/TestSceneFailAnimation.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Gameplay/TestSceneDefaultSongProgressGraph.cs | Simplify null-check with null-conditional. |
| osu.Game.Tests/Visual/Gameplay/TestSceneBeatmapSkinFallbacks.cs | Use is not Container pattern. |
| osu.Game.Tests/Visual/Gameplay/TestSceneBeatmapMetadataDisplay.cs | Convert backing field to auto-property with field usage; adjust check. |
| osu.Game.Tests/Visual/Editing/TestSceneHitObjectSampleAdjustments.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Editing/TestSceneHitObjectComposer.cs | Make local function static. |
| osu.Game.Tests/Visual/Beatmaps/TestSceneBeatmapSetOnlineStatusPill.cs | Use pill.Status++. |
| osu.Game.Tests/Visual/Background/TestSceneTrianglesV2Background.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Background/TestSceneTrianglesBackground.cs | Using order adjustments. |
| osu.Game.Tests/Visual/Background/TestSceneTriangleBorderShader.cs | Convert backing fields to auto-properties with field usage; update state access. |
| osu.Game.Tests/Utils/NamingUtilsTest.cs | Replace Enumerable.Empty<T>() with collection expressions. |
| osu.Game.Tests/Testing/TestSceneRulesetDependencies.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Skins/SkinDeserialisationTest.cs | Replace cast-check with property-pattern. |
| osu.Game.Tests/NonVisual/TestSceneUpdateManager.cs | Replace Enumerable.Empty<T>() with collection expressions. |
| osu.Game.Tests/NonVisual/TestSceneTimedDifficultyCalculation.cs | Replace Enumerable.Empty<T>()/Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Mods/TestCustomisableModRuleset.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Mods/ModUtilsTest.cs | Replace Array.Empty<T>() with collection expressions; inline out var. |
| osu.Game.Tests/Gameplay/TestSceneDrainingHealthProcessor.cs | Using order adjustments. |
| osu.Game.Tests/Editing/Checks/CheckPreviewTimeTest.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Editing/Checks/CheckInconsistentSettingsTest.cs | Using order adjustments. |
| osu.Game.Tests/Editing/Checks/CheckBackgroundQualityTest.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Database/TestRealmKeyBindingStore.cs | Replace Enumerable.Empty<T>() with collection expressions. |
| osu.Game.Tests/Database/RulesetStoreTests.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Database/RealmTest.cs | Make local function static. |
| osu.Game.Tests/Beatmaps/WorkingBeatmapTest.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Beatmaps/TestSceneBeatmapDifficultyCache.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests/Beatmaps/IO/OszArchiveReaderTest.cs | Using order adjustments. |
| osu.Game.Tests/Beatmaps/IO/LegacyBeatmapExporterTest.cs | Make local functions static. |
| osu.Game.Tests/Beatmaps/Formats/LegacyStoryboardDecoderTest.cs | Using order adjustments. |
| osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapDecoderTest.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Tests.iOS/osu.Game.Tests.iOS.csproj | Switch to net10.0-ios; bump Bogus/Moq. |
| osu.Game.Tests.Android/osu.Game.Tests.Android.csproj | Switch to net10.0-android; bump Bogus/Moq. |
| osu.Game.Tests.Android/AndroidManifest.xml | Increase Android target SDK. |
| osu.Game.Rulesets.Taiko/osu.Game.Rulesets.Taiko.csproj | Switch to net10.0. |
| osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs | Using order adjustments. |
| osu.Game.Rulesets.Taiko/UI/TaikoHitTarget.cs | Using order adjustments. |
| osu.Game.Rulesets.Taiko/UI/HitExplosion.cs | Using order adjustments. |
| osu.Game.Rulesets.Taiko/UI/DrumTouchInputArea.cs | Convert backing field to auto-property with field usage. |
| osu.Game.Rulesets.Taiko/UI/DrumSampleTriggerSource.cs | Use is not pattern. |
| osu.Game.Rulesets.Taiko/UI/DrumSamplePlayer.cs | Use gameplay clock property-pattern. |
| osu.Game.Rulesets.Taiko/UI/DrawableTaikoRuleset.cs | Replace Enumerable.Empty<T>() with collection expressions; simplify null-check. |
| osu.Game.Rulesets.Taiko/TaikoRuleset.cs | Using order adjustments; replace Array.Empty<T>() with collection expressions. |
| osu.Game.Rulesets.Taiko/Skinning/Legacy/LegacyTaikoScroller.cs | Convert backing field to auto-property with field usage. |
| osu.Game.Rulesets.Taiko/Skinning/Legacy/LegacySwell.cs | Using order adjustments. |
| osu.Game.Rulesets.Taiko/Skinning/Legacy/LegacyKiaiGlow.cs | Simplify event hookup/teardown with null-conditional. |
| osu.Game.Rulesets.Taiko/Skinning/Default/DefaultHitExplosion.cs | Use property-pattern. |
| osu.Game.Rulesets.Taiko/Skinning/Default/CirclePiece.cs | Convert backing field to auto-property with field usage. |
| osu.Game.Rulesets.Taiko/Skinning/Argon/TaikoArgonSkinTransformer.cs | Simplify null-check with null-conditional. |
| osu.Game.Rulesets.Taiko/Skinning/Argon/ArgonHitExplosion.cs | Use property-pattern. |
| osu.Game.Rulesets.Taiko/Skinning/Argon/ArgonFlourishTriggerSource.cs | Use is not pattern. |
| osu.Game.Rulesets.Taiko/Skinning/Argon/ArgonDrumSampleTriggerSource.cs | Use is not pattern. |
| osu.Game.Rulesets.Taiko/Replays/TaikoFramedReplayInputHandler.cs | Using order adjustments. |
| osu.Game.Rulesets.Taiko/Replays/TaikoAutoGenerator.cs | Using order adjustments. |
| osu.Game.Rulesets.Taiko/Objects/Swell.cs | Using order adjustments. |
| osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableTaikoHitObject.cs | Replace Enumerable.Empty<T>() with collection expressions. |
| osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableSwell.cs | Using order adjustments; use gameplay clock property-pattern. |
| osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableDrumRoll.cs | Using order adjustments. |
| osu.Game.Rulesets.Taiko/Mods/TaikoModSingleTap.cs | Using order adjustments. |
| osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs | Make local function static. |
| osu.Game.Rulesets.Taiko/Mods/TaikoModConstantSpeed.cs | Using order adjustments. |
| osu.Game.Rulesets.Taiko/Edit/Checks/CheckTaikoAbnormalDifficultySettings.cs | Inline out var. |
| osu.Game.Rulesets.Taiko/Difficulty/Preprocessing/TaikoDifficultyHitObject.cs | Using order adjustments. |
| osu.Game.Rulesets.Taiko/Difficulty/Preprocessing/Colour/Data/MonoStreak.cs | Using order adjustments. |
| osu.Game.Rulesets.Taiko/Difficulty/Evaluators/StaminaEvaluator.cs | Use is not pattern inline. |
| osu.Game.Rulesets.Taiko/Beatmaps/TaikoBeatmapConverter.cs | Using order adjustments. |
| osu.Game.Rulesets.Taiko.Tests/osu.Game.Rulesets.Taiko.Tests.csproj | Switch to net10.0; bump NUnit adapter. |
| osu.Game.Rulesets.Taiko.Tests/TaikoBeatmapConversionTest.cs | Use property-patterns. |
| osu.Game.Rulesets.Taiko.Tests/Skinning/TestSceneTaikoKiaiGlow.cs | Using order adjustments. |
| osu.Game.Rulesets.Taiko.Tests/Mods/TestSceneTaikoModRelax.cs | Make local function static. |
| osu.Game.Rulesets.Taiko.Tests/Judgements/JudgementTest.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Rulesets.Taiko.Tests/Editor/Checks/CheckTaikoInconsistentSkipBarLineTest.cs | Using order adjustments. |
| osu.Game.Rulesets.Taiko.Tests/Editor/Checks/CheckTaikoAbnormalDifficultySettingsTest.cs | Using order adjustments. |
| osu.Game.Rulesets.Taiko.Tests.iOS/osu.Game.Rulesets.Taiko.Tests.iOS.csproj | Switch to net10.0-ios. |
| osu.Game.Rulesets.Taiko.Tests.Android/osu.Game.Rulesets.Taiko.Tests.Android.csproj | Switch to net10.0-android; add reference alias workaround target. |
| osu.Game.Rulesets.Taiko.Tests.Android/AndroidManifest.xml | Increase Android target SDK. |
| osu.Game.Rulesets.Osu/osu.Game.Rulesets.Osu.csproj | Switch to net10.0. |
| osu.Game.Rulesets.Osu/Utils/OsuHitObjectGenerationUtils.cs | Using order adjustments. |
| osu.Game.Rulesets.Osu/UI/ReplayAnalysisOverlay.cs | Simplify null-check assignments. |
| osu.Game.Rulesets.Osu/UI/Cursor/CursorTrail.cs | Convert backing field to auto-property with field usage. |
| osu.Game.Rulesets.Osu/UI/Cursor/CursorRippleVisualiser.cs | Use gameplay clock property-pattern. |
| osu.Game.Rulesets.Osu/Skinning/SliderBody.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Rulesets.Osu/Skinning/NonPlayfieldSprite.cs | Make texture scale adjustment null-safe. |
| osu.Game.Rulesets.Osu/Skinning/Legacy/LegacySliderHeadHitCircle.cs | Simplify event unhook with null-conditional. |
| osu.Game.Rulesets.Osu/Skinning/Legacy/LegacySliderBall.cs | Simplify event hook with null-conditional. |
| osu.Game.Rulesets.Osu/Skinning/Legacy/LegacyMainCirclePiece.cs | Simplify event unhook with null-conditional. |
| osu.Game.Rulesets.Osu/Skinning/Legacy/LegacyCursorTrail.cs | Make texture scale adjustment null-safe. |
| osu.Game.Rulesets.Osu/Skinning/Legacy/LegacyCursorParticles.cs | Make texture scale adjustment null-safe. |
| osu.Game.Rulesets.Osu/Skinning/Default/DrawableSliderPath.cs | Convert backing field to auto-property with field usage. |
| osu.Game.Rulesets.Osu/Skinning/Default/DefaultSliderBall.cs | Simplify event unhook with null-conditional. |
| osu.Game.Rulesets.Osu/Skinning/Argon/ArgonSliderBall.cs | Simplify event unhook with null-conditional. |
| osu.Game.Rulesets.Osu/Replays/OsuAutoGeneratorBase.cs | Using order adjustments. |
| osu.Game.Rulesets.Osu/Replays/OsuAutoGenerator.cs | Using order adjustments. |
| osu.Game.Rulesets.Osu/OsuRuleset.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Rulesets.Osu/OsuInputManager.cs | Convert backing field to auto-property with field usage. |
| osu.Game.Rulesets.Osu/Objects/Spinner.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Rulesets.Osu/Objects/Slider.cs | Convert backing fields to auto-properties with field usage; null-conditional updates. |
| osu.Game.Rulesets.Osu/Objects/OsuHitObject.cs | Simplify null-check with null-conditional. |
| osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTick.cs | Using order adjustments. |
| osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuHitObject.cs | Replace empty enumerable with collection expression; refactor cached input manager storage. |
| osu.Game.Rulesets.Osu/Objects/Drawables/Connections/FollowPointLifetimeEntry.cs | Convert backing field to auto-property with field usage. |
| osu.Game.Rulesets.Osu/Objects/Drawables/Connections/FollowPoint.cs | Using order adjustments. |
| osu.Game.Rulesets.Osu/Mods/OsuModStrictTracking.cs | Use gameplay clock property-pattern. |
| osu.Game.Rulesets.Osu/Mods/OsuModHidden.cs | Using order adjustments. |
| osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs | Use static local function; use property-pattern. |
| osu.Game.Rulesets.Osu/Edit/PreciseMovementPopover.cs | Using order adjustments. |
| osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs | Replace Enumerable.Empty<T>() with collection expressions. |
| osu.Game.Rulesets.Osu/Edit/Checks/CheckOsuAbnormalDifficultySettings.cs | Inline out var. |
| osu.Game.Rulesets.Osu/Difficulty/Skills/Speed.cs | Using order adjustments. |
| osu.Game.Rulesets.Osu/Difficulty/Skills/OsuStrainSkill.cs | Using order adjustments. |
| osu.Game.Rulesets.Osu/Difficulty/OsuPerformanceCalculator.cs | Using order adjustments. |
| osu.Game.Rulesets.Osu/Beatmaps/OsuBeatmapConverter.cs | Using order adjustments. |
| osu.Game.Rulesets.Osu.Tests/osu.Game.Rulesets.Osu.Tests.csproj | Switch to net10.0; bump NUnit adapter. |
| osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerInput.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Rulesets.Osu.Tests/TestSceneSlider.cs | Using order adjustments; replace Array.Empty<T>() with collection expressions. |
| osu.Game.Rulesets.Osu.Tests/TestSceneSkinFallbacks.cs | Convert backing field to auto-property with field usage. |
| osu.Game.Rulesets.Osu.Tests/TestSceneHitCircleLateFade.cs | Replace Array.Empty<T>() with collection expressions; object initializer refactor. |
| osu.Game.Rulesets.Osu.Tests/TestSceneGameplayCursorSizeChange.cs | Simplify null-check with null-conditional. |
| osu.Game.Rulesets.Osu.Tests/TestSceneAimErrorMeter.cs | Using order adjustments. |
| osu.Game.Rulesets.Osu.Tests/StackingTest.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Rulesets.Osu.Tests/Mods/TestSceneOsuModNoScope.cs | Using order adjustments. |
| osu.Game.Rulesets.Osu.Tests/Mods/TestSceneOsuModAlternate.cs | Replace Enumerable.Empty<T>() with collection expressions. |
| osu.Game.Rulesets.Osu.Tests/Editor/TestSceneSliderSplitting.cs | Simplify null-check with null-conditional. |
| osu.Game.Rulesets.Osu.Tests/Editor/Checks/CheckOsuAbnormalDifficultySettingsTest.cs | Using order adjustments. |
| osu.Game.Rulesets.Osu.Tests.iOS/osu.Game.Rulesets.Osu.Tests.iOS.csproj | Switch to net10.0-ios; bump Moq. |
| osu.Game.Rulesets.Osu.Tests.Android/osu.Game.Rulesets.Osu.Tests.Android.csproj | Switch to net10.0-android; bump Moq; add reference alias workaround target. |
| osu.Game.Rulesets.Osu.Tests.Android/AndroidManifest.xml | Increase Android target SDK. |
| osu.Game.Rulesets.Mania/osu.Game.Rulesets.Mania.csproj | Switch to net10.0. |
| osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs | Using order adjustments. |
| osu.Game.Rulesets.Mania/Skinning/Legacy/LegacyHitExplosion.cs | Simplify null-check with null-conditional. |
| osu.Game.Rulesets.Mania/Skinning/Legacy/LegacyBodyPiece.cs | Simplify null-checks with null-conditional. |
| osu.Game.Rulesets.Mania/Skinning/Argon/ManiaArgonSkinTransformer.cs | Simplify null-checks with null-conditional. |
| osu.Game.Rulesets.Mania/Skinning/Argon/ArgonHoldNoteTailPiece.cs | Simplify null-check with null-conditional. |
| osu.Game.Rulesets.Mania/Scoring/ManiaHitWindows.cs | Convert backing fields to auto-properties with field usage; adjust multiplier calculation. |
| osu.Game.Rulesets.Mania/Objects/HoldNote.cs | Convert backing field to auto-property with field usage; simplify null-checks. |
| osu.Game.Rulesets.Mania/Objects/Drawables/DrawableManiaHitObject.cs | Using order adjustments. |
| osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNote.cs | Use gameplay clock property-pattern. |
| osu.Game.Rulesets.Mania/Mods/ManiaModMirror.cs | Using order adjustments. |
| osu.Game.Rulesets.Mania/Mods/ManiaModHoldOff.cs | Using order adjustments. |
| osu.Game.Rulesets.Mania/Mods/ManiaModHidden.cs | Using order adjustments. |
| osu.Game.Rulesets.Mania/MathUtils/LegacySortHelper.cs | Minor loop decrement style change. |
| osu.Game.Rulesets.Mania/ManiaRuleset.cs | Replace empty returns with collection expressions. |
| osu.Game.Rulesets.Mania/Edit/ManiaEditorPlayfield.cs | Using order adjustments. |
| osu.Game.Rulesets.Mania/Edit/Checks/CheckManiaAbnormalDifficultySettings.cs | Inline out var. |
| osu.Game.Rulesets.Mania/Edit/Blueprints/ManiaPlacementBlueprint.cs | Convert backing field to auto-property with field usage. |
| osu.Game.Rulesets.Mania/Beatmaps/Patterns/Pattern.cs | Replace Enumerable.Empty<T>() with collection expressions. |
| osu.Game.Rulesets.Mania/Beatmaps/Patterns/Legacy/SpinnerPatternGenerator.cs | Using order adjustments. |
| osu.Game.Rulesets.Mania/Beatmaps/Patterns/Legacy/HitCirclePatternGenerator.cs | Using order adjustments. |
| osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs | Using order adjustments. |
| osu.Game.Rulesets.Mania.Tests/osu.Game.Rulesets.Mania.Tests.csproj | Switch to net10.0; bump NUnit adapter. |
| osu.Game.Rulesets.Mania.Tests/TestSceneTimingBasedNoteColouring.cs | Using order adjustments. |
| osu.Game.Rulesets.Mania.Tests/TestSceneStage.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Rulesets.Mania.Tests/TestSceneColumn.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Rulesets.Mania.Tests/Mods/TestSceneManiaModHoldOff.cs | Using order adjustments. |
| osu.Game.Rulesets.Mania.Tests/ManiaSpecialColumnTest.cs | Using order adjustments. |
| osu.Game.Rulesets.Mania.Tests/Editor/TestSceneManiaBeatSnapGrid.cs | Replace Enumerable.Empty<T>() with collection expressions. |
| osu.Game.Rulesets.Mania.Tests/Editor/ManiaPlacementBlueprintTestScene.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Rulesets.Mania.Tests/Editor/Checks/CheckManiaAbnormalDifficultySettingsTest.cs | Using order adjustments. |
| osu.Game.Rulesets.Mania.Tests/Editor/Checks/CheckKeyCountTest.cs | Using order adjustments. |
| osu.Game.Rulesets.Mania.Tests.iOS/osu.Game.Rulesets.Mania.Tests.iOS.csproj | Switch to net10.0-ios. |
| osu.Game.Rulesets.Mania.Tests.Android/osu.Game.Rulesets.Mania.Tests.Android.csproj | Switch to net10.0-android; add reference alias workaround target. |
| osu.Game.Rulesets.Mania.Tests.Android/AndroidManifest.xml | Increase Android target SDK. |
| osu.Game.Rulesets.Catch/osu.Game.Rulesets.Catch.csproj | Switch to net10.0. |
| osu.Game.Rulesets.Catch/UI/CatcherArea.cs | Convert backing field to auto-property with field usage; use gameplay clock property-pattern. |
| osu.Game.Rulesets.Catch/Skinning/Legacy/LegacyCatchComboCounter.cs | Use gameplay clock property-pattern. |
| osu.Game.Rulesets.Catch/Skinning/Default/CatchHitObjectPiece.cs | Simplify null-checks with null-conditional. |
| osu.Game.Rulesets.Catch/Scoring/CatchHealthProcessor.cs | Replace Enumerable.Empty<T>() with collection expressions. |
| osu.Game.Rulesets.Catch/Objects/PalpableCatchHitObject.cs | Convert backing field to auto-property with field usage. |
| osu.Game.Rulesets.Catch/Objects/JuiceStream.cs | Convert backing field to auto-property with field usage. |
| osu.Game.Rulesets.Catch/Objects/Drawables/DrawableBanana.cs | Simplify null-check with null-conditional. |
| osu.Game.Rulesets.Catch/Objects/CatchHitObject.cs | Simplify null-check with null-conditional. |
| osu.Game.Rulesets.Catch/Mods/CatchModNoScope.cs | Using order adjustments. |
| osu.Game.Rulesets.Catch/Mods/CatchModMirror.cs | Using order adjustments. |
| osu.Game.Rulesets.Catch/Mods/CatchModHardRock.cs | Using order adjustments. |
| osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs | Make local function static. |
| osu.Game.Rulesets.Catch/Edit/Checks/CheckCatchAbnormalDifficultySettings.cs | Inline out var. |
| osu.Game.Rulesets.Catch/CatchRuleset.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Rulesets.Catch/Beatmaps/CatchBeatmapConverter.cs | Using order adjustments. |
| osu.Game.Rulesets.Catch/Beatmaps/CatchBeatmap.cs | Make local iterator static. |
| osu.Game.Rulesets.Catch.Tests/osu.Game.Rulesets.Catch.Tests.csproj | Switch to net10.0; bump NUnit adapter. |
| osu.Game.Rulesets.Catch.Tests/TestSceneCatcher.cs | Using order adjustments. |
| osu.Game.Rulesets.Catch.Tests/JuiceStreamPathTest.cs | Replace Array.Empty<T>() with collection expressions. |
| osu.Game.Rulesets.Catch.Tests/CatchBeatmapConversionTest.cs | Convert backing fields to auto-properties using field. |
| osu.Game.Rulesets.Catch.Tests.iOS/osu.Game.Rulesets.Catch.Tests.iOS.csproj | Switch to net10.0-ios. |
| osu.Game.Rulesets.Catch.Tests.Android/osu.Game.Rulesets.Catch.Tests.Android.csproj | Switch to net10.0-android; add reference alias workaround target. |
| osu.Game.Rulesets.Catch.Tests.Android/AndroidManifest.xml | Increase Android target SDK. |
| osu.Game.Benchmarks/osu.Game.Benchmarks.csproj | Switch to net10.0; bump NUnit adapter. |
| osu.Desktop/osu.Desktop.csproj | Switch to net10.0. |
| osu.Desktop/OsuGameDesktop.cs | Using order adjustments. |
| osu.Desktop/NVAPI.cs | Small refactors (use nint, out var, formatting). |
| osu.Desktop/LegacyIpc/LegacyIpcMessage.cs | Using order adjustments. |
| osu.Android/osu.Android.csproj | Switch to net10.0-android; bump MAUI Essentials. |
| osu.Android/Native/VulkanProbe.cs | Restrict native library search path. |
| osu.Android/Native/OboeAudioBridge.cs | Restrict native library search path. |
| osu.Android/AndroidManifest.xml | Increase Android target SDK. |
| osu.Android.props | Adjust Android handler type, add 16KB page-size suppression + patch import + release AOT/trim settings. |
| global.json | Pin repository SDK to 10.0.100. |
| Templates/Rulesets/ruleset-scrolling-example/osu.Game.Rulesets.Pippidon/osu.Game.Rulesets.Pippidon.csproj | Switch template to net10.0. |
| Templates/Rulesets/ruleset-scrolling-example/osu.Game.Rulesets.Pippidon/PippidonRuleset.cs | Replace Array.Empty<T>() with collection expressions. |
| Templates/Rulesets/ruleset-scrolling-example/osu.Game.Rulesets.Pippidon/PippidonDifficultyCalculator.cs | Replace empties with collection expressions. |
| Templates/Rulesets/ruleset-scrolling-example/osu.Game.Rulesets.Pippidon.Tests/osu.Game.Rulesets.Pippidon.Tests.csproj | Switch template tests to net10.0; bump NUnit adapter. |
| Templates/Rulesets/ruleset-scrolling-empty/osu.Game.Rulesets.EmptyScrolling/osu.Game.Rulesets.EmptyScrolling.csproj | Switch template to net10.0. |
| Templates/Rulesets/ruleset-scrolling-empty/osu.Game.Rulesets.EmptyScrolling/UI/DrawableEmptyScrollingRuleset.cs | Using order adjustments. |
| Templates/Rulesets/ruleset-scrolling-empty/osu.Game.Rulesets.EmptyScrolling/EmptyScrollingRuleset.cs | Replace Array.Empty<T>() with collection expressions. |
| Templates/Rulesets/ruleset-scrolling-empty/osu.Game.Rulesets.EmptyScrolling/EmptyScrollingDifficultyCalculator.cs | Replace empties with collection expressions. |
| Templates/Rulesets/ruleset-scrolling-empty/osu.Game.Rulesets.EmptyScrolling/Beatmaps/EmptyScrollingBeatmapConverter.cs | Using order adjustments. |
| Templates/Rulesets/ruleset-scrolling-empty/osu.Game.Rulesets.EmptyScrolling.Tests/osu.Game.Rulesets.EmptyScrolling.Tests.csproj | Switch template tests to net10.0; bump NUnit adapter. |
| Templates/Rulesets/ruleset-example/osu.Game.Rulesets.Pippidon/osu.Game.Rulesets.Pippidon.csproj | Switch template to net10.0. |
| Templates/Rulesets/ruleset-example/osu.Game.Rulesets.Pippidon/UI/PippidonCursorContainer.cs | Simplify null-check with null-conditional. |
| Templates/Rulesets/ruleset-example/osu.Game.Rulesets.Pippidon/PippidonRuleset.cs | Replace Array.Empty<T>() with collection expressions. |
| Templates/Rulesets/ruleset-example/osu.Game.Rulesets.Pippidon/PippidonDifficultyCalculator.cs | Replace empties with collection expressions. |
| Templates/Rulesets/ruleset-example/osu.Game.Rulesets.Pippidon.Tests/osu.Game.Rulesets.Pippidon.Tests.csproj | Switch template tests to net10.0; bump NUnit adapter. |
| Templates/Rulesets/ruleset-empty/osu.Game.Rulesets.EmptyFreeform/osu.Game.Rulesets.EmptyFreeform.csproj | Switch template to net10.0. |
| Templates/Rulesets/ruleset-empty/osu.Game.Rulesets.EmptyFreeform/EmptyFreeformRuleset.cs | Replace Array.Empty<T>() with collection expressions. |
| Templates/Rulesets/ruleset-empty/osu.Game.Rulesets.EmptyFreeform/EmptyFreeformDifficultyCalculator.cs | Replace empties with collection expressions. |
| Templates/Rulesets/ruleset-empty/osu.Game.Rulesets.EmptyFreeform.Tests/osu.Game.Rulesets.EmptyFreeform.Tests.csproj | Switch template tests to net10.0; bump NUnit adapter. |
| Directory.Build.props | Update C# language version to 14.0. |
| .github/workflows/update-web-mod-definitions.yml | Update action versions + .NET install step. |
| .github/workflows/report-nunit.yml | Loosen test-reporter version pin. |
| .github/workflows/release.yml | Update .NET install step and Android target framework paths. |
| .github/workflows/deploy.yml | Update output setting mechanism; update .NET install step. |
| .github/workflows/ci.yml | Update .NET install step; update macOS runner label; bump InspectCode action. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| internal OsuInputManager OsuActionInputManager => field ??= GetContainingInputManager() as OsuInputManager; | ||
|
|
There was a problem hiding this comment.
This looks like a compile-time error: field is only valid inside a property accessor body for an auto-property backing field, but OsuActionInputManager is an expression-bodied property with no accessor block. Reintroduce an explicit backing field (as before), or convert this to a full get { ... } accessor where field is valid (if using a compiler/language version that supports it).
| internal OsuInputManager OsuActionInputManager => field ??= GetContainingInputManager() as OsuInputManager; | |
| private OsuInputManager osuActionInputManager; | |
| internal OsuInputManager OsuActionInputManager => osuActionInputManager ??= GetContainingInputManager() as OsuInputManager; |
| }))); | ||
| // This would normally be done as part of the above operation with an actual server. | ||
| AddStep("disable user mods", () => MultiplayerClient.ChangeUserMods(API.LocalUser.Value.OnlineID, Array.Empty<APIMod>())); | ||
| AddStep("disable user mods", () => MultiplayerClient.ChangeUserMods(API.LocalUser.Value.OnlineID, Array.Empty<Mod>())); |
There was a problem hiding this comment.
ChangeUserMods(...) in this context appears to operate on API mod types (this file previously passed Array.Empty<APIMod>()). Passing Array.Empty<Mod>() is likely the wrong type and will either not compile or break the intent of the test. Use an empty APIMod array/collection expression instead.
| AddStep("disable user mods", () => MultiplayerClient.ChangeUserMods(API.LocalUser.Value.OnlineID, Array.Empty<Mod>())); | |
| AddStep("disable user mods", () => MultiplayerClient.ChangeUserMods(API.LocalUser.Value.OnlineID, Array.Empty<APIMod>())); |
| { | ||
| "sdk": { | ||
| "version": "8.0.100", | ||
| "version": "10.0.100", |
There was a problem hiding this comment.
The PR description focuses on iOS trim analyzer warning suppression and Android ELF page alignment, but the diff also includes a repo-wide migration to net10.0*, C# language version changes, CI runner/action changes, and large-scale syntax refactors. Consider splitting the framework/tooling upgrade into a separate PR or updating the PR title/description to accurately reflect the scope and risk.
iOS CI builds fail with IL2026/IL2067 warnings from Newtonsoft.Json reflection usage treated as errors. Android builds emit XA0141 warnings for
libveldrid-spirv.soshipping with 4KB ELF LOAD alignment instead of 16KB required by Android 16+.iOS trim analyzer (IL2026/IL2067)
SuppressTrimAnalysisWarnings=trueonly suppresses the ILLink tool warnings, not the Roslyn-based trim analyzer that runs at compile time. AddedEnableTrimAnalyzer=falseandNoWarnfor IL2026/IL2067 inosu.iOS.props.Android 16KB page-size alignment
Rather than just suppressing XA0141, added
build/PatchElfPageSize.targets— an MSBuild inline C# task that rewrites 64-bit ELF LOAD segments from 4KB to 16KB alignment in-place:file_offset % 0x4000 == vaddr % 0x4000, updatesp_align,p_offset,sh_offset.soAndroidPageSize16KBCompatibilityCheck=falseretained as fallback since the SDK validation target can race ahead of the patch targetTODO: Remove both the patcher and suppression once
ppy.Veldrid.SPIRVships 16KB-aligned native libraries.✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.